<?php
/**
 * lang.class.php
 *
 * 项目多语言管理
 * @author tommy <streen003@gmail.com>
 * @copyright Copyright (c) 2010 Tommycode Studio
 * @link http://www.doitphp.com
 * @license New BSD License.{@link http://www.opensource.org/licenses/bsd-license.php}
 * @version $Id: lang.class.php 1.0 2011-12-24 20:38:04Z tommy $
 * @package libraries
 * @since 1.0
 */

if (!defined('IN_DOIT')) {
    exit();
}

class language extends Base {

    /**
     * 语言包的目录
     *
     * @var string
     */
    protected $_basePath;

    /**
     * 语言包名称
     *
     * @var string
     */
    protected $_languageName;

    /**
     * 语言文件的后缀
     *
     * @var string
     */
    protected $_suffix;

    /**
     * 构造函数
     *
     * @access public
     * @return boolean
     */
    public function __construct() {
        $this->_basePath     = LANG_DIR;
        $this->_languageName = 'zh_cn';
        $this->_suffix       = '.php';

        return true;
    }

    /**
     * 设置语言名称
     *
     * @access public
     * @param string $language_name 语言名称
     * @return $this
     */
    public function set_language($language_name) {

        //参数分析
        if (!$language_name) {
            return false;
        }

        $this->_languageName = $language_name;

        return $this;
    }

    /**
     * 获取语言名称
     *
     * @access public
     * @return string
     */
    public function get_language() {

        return $this->_languageName;
    }

    /**
     * 设置语言包的基本路径
     *
     * @access public
     * @param string $path 语言包的基本路径
     * @return $this
     */
    public function set_base_path($path) {

        //参数分析
        if (!$path) {
            return false;
        }

        $this->_basePath = $path;

        return $this;
    }

	/**
     * 获取语言包的基本路径
     *
     * @access public
     * @return string
     */
    public function get_base_path() {

        return $this->_basePath;
    }

    /**
     * 设置语言文件的后缀
     *
     * @access public
     * @param string $suffix 语言文件的后缀名称
     * @return $this
     */
    public function set_suffix($suffix) {

        //参数分析
        if (!$suffix) {
            return false;
        }

        $this->_suffix = $suffix;

        return $this;
    }

    /**
     * 获取语言文件的后缀
     *
     * @access public
     * @return string
     */
    public function get_suffix() {

        return $this->_suffix;
    }

    /**
     * 加载语言数据文件
     *
     * @access public
     * @param string $file_name 语言数据文件名称
     * @return array
     */
    public function get_file($file_name = null) {

        //分析语言文件的路径
        $language_file  = $this->_basePath . $this->_languageName;
        $language_file .= (!is_null($file_name) ? '/' . $file_name : '') . $this->_suffix;

        static $_load_array = array();
        if ($_load_array[$language_file] == null) {
            //判断文件是否存在
            if (!is_file($language_file)) {
                Controller::halt('The File:' . $language_file . ' is not exists');
            }
            $_load_array[$language_file] = include_once $language_file;
        }

        return $_load_array[$language_file];
    }

    /**
     * 获取语言包某键值的内容
     *
     * @access public
     * @param string $key 键值
     * @param string $file_name 语言数据文件名称
     * @return string
     */
    public function get($key, $file_name = null) {

        $lang_array = $this->get_file($file_name);

        return isset($lang_array[$key]) ? $lang_array[$key] : $key;
    }
}